MOD V1.0                 @  ~   c                                                                                                                       ai_heartbeat          ai_heartbeat         creaturepalcus       doorpalcus           elrendur             encounterpalcus      itempalcus           module               nwnx_redis           nwnx_redis_lib  	     on_player_chat  
     on_player_chat       placeablepalcus      Repute               soundpalcus          storepalcus          tavern               tavern               tavern               triggerpalcus        waypointpalcus                                                                                                                                                                                 g  O  /  ~	    ;        7    9  l  2I    Q   X          ڷ ,   a  g   ?   ' 2   .   0a  
` l  vc   NCS V1.0B  g       
llm_to_nwn              #       null#        (nil)#          npc_tag      reply                 *    >,                  '                  LPOP    Deferred 
NWNX_Redis                GetResultAsString 
NWNX_Redis             #include "nwnx_redis"
#include "nwnx_redis_lib" // Required to convert the Result ID to a string

void main()
{
    // 1. Pop the message (Returns an Integer ID)
    int nResultId = NWNX_Redis_LPOP("llm_to_nwn");

    // 2. Convert the ID to the actual text string
    string sReplyData = NWNX_Redis_GetResultAsString(nResultId);

    if (sReplyData != "" && sReplyData != "null" && sReplyData != "(nil)")
    {
        json jResponse = JsonParse(sReplyData);
        string sNpcTag = JsonGetString(JsonObjectGet(jResponse, "npc_tag"));
        string sReplyText = JsonGetString(JsonObjectGet(jResponse, "reply"));

        object oNPC = GetObjectByTag(sNpcTag);
        if (GetIsObjectValid(oNPC))
        {
            AssignCommand(oNPC, ActionSpeakString(sReplyText));
        }
    }
}
ITP V3.28   >      ~   	     	  !   	                                                                        (          0          8          @          H          P          X          `          h          p          x                                                                                                                                                                                                                         (         0         8         @         H         P         X         `         h         p         x                                                                                                                                           %                          0         &        L         '                  (                  )                  *                            	         8                  9                  :                          d         G         "         H         #         I         $         J         %         1        x         2                  3                  4                  5                  6                                              2         ,                 -         
         .                           1         8                  ;                 <                  =                  >                  +         /         ?                  /                  #                 
                  B                                     D                  C                  k                   E         !         K                           &                   '                   (                   *                   )         !          +         #          ,                   -                                                
                           A
               !                  "                  #                  $                  L         .   MAIN            STRREF          LIST            ID              NAME            RESREF          CR              FACTION            Elrendurelrendur   Defender                        	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }         -   6   =            	   
                        $   %                                                                               !   "   #      &   '   (   )   *   +   ,      .   /   0   1   2   3   4   5      7   9   :   ;   <      8   ITP V3.28                  @      @  `     <                                                                  (          0          8          @          H          P          X                                                            !                  "                  #                  $                  N                  O        (         P                            	         Q                  R            MAIN            STRREF          LIST            ID                                      	   
                                                                              	   
         UTC V3.28   S                       |      n       f          g          h          i          j          k          l          m          n          o          p          q          r          s          t          u          v          w          x          y          z          {          |          }          ~                                                                                                                                                                                                                                                                                   ,        8        D        P        \        h        t                                                                                                                                  @                                                                        	         %                                       t         =   
   	   I      
   U                                  
      V   
      Z         S                                                                                                                                                                         !         "          #         $          %         &          '         (          )         *          +          ,           -         .          /         0          1         2          3         4          5         6          7          8           9          :           ;         <          =         >          ?         @          A          B          C          D          E          F          G          H          I   
       J         K          L          M   i      N   i      O         P          Q          R           S   d       T          U     A   V           W         X   ^      Y   o      Z   ~      [         \         ]         ^         _         `         a         b         c   	     d        e           f           f          f           f          f          f          f          f          f          f           f   &       f          f          f          f           f           f          f           f          f          f          f          f          f          f           f           f           f          g   t      h         h         h   p     h         h   g     h        h         h         h        h   b     h   A     h         h         h         h         h        h          h   )      h   .      i         j         k         l         m         n         o   !       p           q         o   %       p           q         o   d       p           q         o          p           q         r         o          p           q         o   V       p           q         o   f       p           q         o          p           q         s         o          p           q         o   9      p           q         o   x       p           q         o          p           q         t        o   !      p           q         o   N       p           q         o         p           q         o          p           q         u   (     o          p           q         o   X       p           q         o   x      p           q         o          p           q         v   <     o   y       p           q         o   C       p           q         o          p           q         l         m         w   L     x   )     y          z          x   6     y         z          {   X     |   C     |   Q     |   a     |   q     |   ~     |        |        |         }       
   ~     TemplateResRef  Race            FirstName       LastName        Appearance_Type Gender          Phenotype       PortraitId      Description     Tag             Conversation    IsPC            FactionID       Disarmable      Subrace         Deity           Wings_New       Tail_New        SoundSetFile    Plot            IsImmortal      Interruptable   Lootable        NoPermDeath     BodyBag         StartingPackage DecayTime       ArmorPart_RFoot xArmorPart_RFootBodyPart_LFoot  xBodyPart_LFoot BodyPart_RShin  xBodyPart_RShin BodyPart_LShin  xBodyPart_LShin BodyPart_LThigh xBodyPart_LThighBodyPart_RThigh xBodyPart_RThighBodyPart_Pelvis xBodyPart_PelvisBodyPart_Torso  xBodyPart_Torso BodyPart_Belt   xBodyPart_Belt  BodyPart_Neck   xBodyPart_Neck  BodyPart_RFArm  xBodyPart_RFArm BodyPart_LFArm  xBodyPart_LFArm BodyPart_RBicep xBodyPart_RBicepBodyPart_LBicep xBodyPart_LBicepBodyPart_RShoul xBodyPart_RShoulBodyPart_LShoul xBodyPart_LShoulBodyPart_RHand  xBodyPart_RHand BodyPart_LHand  xBodyPart_LHand Appearance_Head xAppearance_HeadColor_Skin      Color_Hair      Color_Tattoo1   Color_Tattoo2   Str             Dex             Con             Int             Wis             Cha             WalkRate        NaturalAC       HitPoints       CurrentHitPointsMaxHitPoints    refbonus        willbonus       fortbonus       GoodEvil        LawfulChaotic   ChallengeRating CRAdjust        PerceptionRange ScriptHeartbeat ScriptOnNotice  ScriptSpellAt   ScriptAttacked  ScriptDamaged   ScriptDisturbed ScriptEndRound  ScriptDialogue  ScriptSpawn     ScriptRested    ScriptDeath     ScriptUserDefineScriptOnBlocked SkillList       Rank            FeatList        Feat            TemplateList    SpecAbilityList ClassList       Class           ClassLevel      KnownList0      Spell           SpellMetaMagic  SpellFlags      KnownList1      KnownList2      KnownList3      KnownList4      KnownList5      ItemList        InventoryRes    Repos_PosX      Repos_Posy      Equip_ItemList  EquippedRes     PaletteID       Comment         elrendur             Elrendur             Arna          Elrendur         x2_def_heartbeatx2_def_perceptx2_def_spellcastx2_def_attackedx2_def_ondamagex2_def_ondisturbx2_def_endcombatx2_def_onconvx2_def_spawnx2_def_restedx2_def_ondeathx2_def_userdefx2_def_onblockednw_wswmls002nw_wbwmln002x2_mdrowar001nw_it_mboots010nw_it_mglove008nw_maarcl057nw_it_mring023nw_it_mneck036nw_it_mbelt011nw_wamar001                                	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e                                                                                                                                                                                                                                                                                                                     	   
                                                                         !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /              0   H      1   2   3   4      5   6   7   8      9   :   ;   <      =   >   ?   @      A   B   C   D      E   F   G      I   J      K   L   M   N   O   P   Q   R   ITP V3.28                         X   t  4                                                                  (          0          8          @          H          P                                                  	                                                                                  !                  "                  #                  $                              MAIN            STRREF          ID              LIST                                    	   
                                                                        	   
   ITP V3.28   O        H             p    t                                                                 (          0          8          @          H          P          X          `          h          p          x                                                                                                                                                                                                                         (         0         8         @         H         P         X         `         h         p         x                                                                                                                                                                                                        (         0         8         @         H         P         X         `         h                      O                                                       S         	                                                      :         T        @                           U         
         V                  W        P                  7         X                           ?                  ;                                    8         8        l                  <                           Y                                    Z                  [                                    F        @                  9         ]                 ^                  _                  \                  +                  a                  b                           6                                              !                  "                  #                  $                  L         5                          d                 e                  f                  g                                  j                   h                  i                  k                l         !         m         "         n         #         o         $         +         %         p         &                 8        q         '         r         (         s         )         t         *                  =         w         .         x         /         y        P        z         0         {         1         |         2                  3                 `        v         +                  ,                  -                  >                  4   MAIN            STRREF          LIST            ID                                      	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~                                                                                                         $   %   +   ,                              	   
                           	                      !   "   #                                 &   '   (   )   *   
   -   1   5   <   B   C   D   H   I   N      .   /   0      2   3   4      6   7   8   9   :   ;      =   >   ?   @   A      E   F   G      J   K   L   M   IFO V3.28      P   8     8   p  4                7      6                 
                                             
      9         E              
   	   Q      
   U           0B        A                            ?                                                                            \         
         \         i         y         z                                           !         "         #         $         %         &         '         (        )        *        +   #     ,   $     -   %     .   &     /   '     0   (  
   1   )     2          3         4         5         6   -     7      Mod_ID          Mod_MinGameVer  Mod_Creator_ID  Mod_Version     Expansion_Pack  Mod_Name        Mod_Tag         Mod_Description Mod_IsSaveGame  Mod_CustomTlk   Mod_Entry_Area  Mod_Entry_X     Mod_Entry_Y     Mod_Entry_Z     Mod_Entry_Dir_X Mod_Entry_Dir_Y Mod_Expan_List  Mod_DawnHour    Mod_DuskHour    Mod_MinPerHour  Mod_StartMonth  Mod_StartDay    Mod_StartHour   Mod_StartYear   Mod_XPScale     Mod_OnHeartbeat Mod_OnModLoad   Mod_OnModStart  Mod_OnClientEntrMod_OnClientLeavMod_OnActvtItem Mod_OnAcquirItemMod_OnUsrDefinedMod_OnUnAqreItemMod_OnPlrDeath  Mod_OnPlrDying  Mod_OnPlrEqItm  Mod_OnPlrLvlUp  Mod_OnSpawnBtnDnMod_OnPlrRest   Mod_OnPlrUnEqItmMod_OnCutsnAbortMod_OnPlrChat   Mod_OnPlrTarget Mod_OnPlrGuiEvt Mod_OnPlrTileActMod_OnNuiEvent  Mod_StartMovie  Mod_DefaultBic  Mod_UUID        Mod_PartyControlMod_CutSceneListMod_GVar_List   Mod_Area_list   Area_Name       Mod_HakList        {P"'e3G   1.89          	   smart npc   smartnpc           tavernai_heartbeatx2_mod_def_load x3_mod_def_enter x2_mod_def_actx2_mod_def_aqu x2_mod_def_unaqunw_o0_deathnw_o0_dyingx2_mod_def_equ nw_o0_respawnx2_mod_def_restx2_mod_def_unequ on_player_chat          tavern                            	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   7                         // copied from https://nwnxee.github.io/unified/nwnx__redis_8nss_source.html

#include "nwnx_redis_lib"

 // Skipping sub-command: BITFIELD/{"command"=>"OVERFLOW", "type"=>"enum", "enum"=>["WRAP", "SAT", "FAIL"], "optional"=>true} - not supported yet.
 // Skipping sub-command: CLIENT_KILL/{"command"=>"TYPE", "type"=>"enum", "enum"=>["normal", "master", "slave", "pubsub"], "optional"=>true} - not supported yet.
 // Skipping sub-command: CLIENT_LIST/{"command"=>"TYPE", "type"=>"enum", "enum"=>["normal", "master", "replica", "pubsub"], "optional"=>true} - not supported yet.
 // Skipping sub-command: SET/{"command"=>"expiration", "type"=>"enum", "enum"=>["EX seconds", "PX milliseconds"], "optional"=>true} - not supported yet.
 // Skipping XCLAIM, cannot parse argument: {"name"=>"force", "enum"=>["FORCE"], "optional"=>true} - not supported yet.
 // Skipping XCLAIM, cannot parse argument: {"name"=>"justid", "enum"=>["JUSTID"], "optional"=>true} - not supported yet.
 int NWNX_Redis_APPEND(
     string key,
     string value
 );

 int NWNX_Redis_AUTH(
     string password
 );

 int NWNX_Redis_BGREWRITEAOF();

 int NWNX_Redis_BGSAVE();

 int NWNX_Redis_BITCOUNT(
     string key,
     // Redis type: integer
     int start = 0,
     // Redis type: integer
     int end = 0
 );

 int NWNX_Redis_BITFIELD(
     string key,
     // Redis type: type
     string get_type = "",
     // Redis type: integer
     int get_offset = 0,
     // Redis type: type
     string set_type = "",
     // Redis type: integer
     int set_offset = 0,
     // Redis type: integer
     int set_value = 0,
     // Redis type: type
     string incrby_type = "",
     // Redis type: integer
     int incrby_offset = 0,
     // Redis type: integer
     int incrby_increment = 0
 );

 int NWNX_Redis_BITOP(
     string operation,
     // Redis type: key
     string destkey,
     string key
 );

 int NWNX_Redis_BITPOS(
     string key,
     // Redis type: integer
     int bit,
     // Redis type: integer
     int start = 0,
     // Redis type: integer
     int end = 0
 );

 int NWNX_Redis_BLPOP(
     string key,
     // Redis type: integer
     int timeout
 );

 int NWNX_Redis_BRPOP(
     string key,
     // Redis type: integer
     int timeout
 );

 int NWNX_Redis_BRPOPLPUSH(
     // Redis type: key
     string source,
     // Redis type: key
     string destination,
     // Redis type: integer
     int timeout
 );

 int NWNX_Redis_BZPOPMIN(
     string key,
     // Redis type: integer
     int timeout
 );

 int NWNX_Redis_BZPOPMAX(
     string key,
     // Redis type: integer
     int timeout
 );

 int NWNX_Redis_CLIENT_ID();

 int NWNX_Redis_CLIENT_KILL(
     string ip_port = "",
     // Redis type: integer
     int id_client_id = 0,
     string addr_ip_port = "",
     string skipme_yes_no = ""
 );

 int NWNX_Redis_CLIENT_LIST();

 int NWNX_Redis_CLIENT_GETNAME();

 int NWNX_Redis_CLIENT_PAUSE(
     // Redis type: integer
     int timeout
 );

 int NWNX_Redis_CLIENT_REPLY(
     // Redis type: enum
     string reply_mode
 );

 int NWNX_Redis_CLIENT_SETNAME(
     string connection_name
 );

 int NWNX_Redis_CLIENT_UNBLOCK(
     string client_id,
     // Redis type: enum
     string unblock_type = ""
 );

 int NWNX_Redis_CLUSTER_ADDSLOTS(
     // Redis type: integer
     int slot
 );

 int NWNX_Redis_CLUSTER_COUNT_FAILURE_REPORTS(
     string node_id
 );

 int NWNX_Redis_CLUSTER_COUNTKEYSINSLOT(
     // Redis type: integer
     int slot
 );

 int NWNX_Redis_CLUSTER_DELSLOTS(
     // Redis type: integer
     int slot
 );

 int NWNX_Redis_CLUSTER_FAILOVER(
     // Redis type: enum
     string options = ""
 );

 int NWNX_Redis_CLUSTER_FORGET(
     string node_id
 );

 int NWNX_Redis_CLUSTER_GETKEYSINSLOT(
     // Redis type: integer
     int slot,
     // Redis type: integer
     int count
 );

 int NWNX_Redis_CLUSTER_INFO();

 int NWNX_Redis_CLUSTER_KEYSLOT(
     string key
 );

 int NWNX_Redis_CLUSTER_MEET(
     string ip,
     // Redis type: integer
     int port
 );

 int NWNX_Redis_CLUSTER_NODES();

 int NWNX_Redis_CLUSTER_REPLICATE(
     string node_id
 );

 int NWNX_Redis_CLUSTER_RESET(
     // Redis type: enum
     string reset_type = ""
 );

 int NWNX_Redis_CLUSTER_SAVECONFIG();

 int NWNX_Redis_CLUSTER_SET_CONFIG_EPOCH(
     // Redis type: integer
     int config_epoch
 );

 int NWNX_Redis_CLUSTER_SETSLOT(
     // Redis type: integer
     int slot,
     // Redis type: enum
     string subcommand,
     string node_id = ""
 );

 int NWNX_Redis_CLUSTER_SLAVES(
     string node_id
 );

 int NWNX_Redis_CLUSTER_REPLICAS(
     string node_id
 );

 int NWNX_Redis_CLUSTER_SLOTS();

 int NWNX_Redis_COMMAND();

 int NWNX_Redis_COMMAND_COUNT();

 int NWNX_Redis_COMMAND_GETKEYS();

 int NWNX_Redis_COMMAND_INFO(
     string command_name
 );

 int NWNX_Redis_CONFIG_GET(
     string parameter
 );

 int NWNX_Redis_CONFIG_REWRITE();

 int NWNX_Redis_CONFIG_SET(
     string parameter,
     string value
 );

 int NWNX_Redis_CONFIG_RESETSTAT();

 int NWNX_Redis_DBSIZE();

 int NWNX_Redis_DEBUG_OBJECT(
     string key
 );

 int NWNX_Redis_DEBUG_SEGFAULT();

 int NWNX_Redis_DECR(
     string key
 );

 int NWNX_Redis_DECRBY(
     string key,
     // Redis type: integer
     int decrement
 );

 int NWNX_Redis_DEL(
     string key
 );

 int NWNX_Redis_DISCARD();

 int NWNX_Redis_DUMP(
     string key
 );

 int NWNX_Redis_ECHO(
     string message
 );

 int NWNX_Redis_EVAL(
     string script,
     // Redis type: integer
     int numkeys,
     string key,
     string arg
 );

 int NWNX_Redis_EVALSHA(
     string sha1,
     // Redis type: integer
     int numkeys,
     string key,
     string arg
 );

 int NWNX_Redis_EXEC();

 int NWNX_Redis_EXISTS(
     string key
 );

 int NWNX_Redis_EXPIRE(
     string key,
     // Redis type: integer
     int seconds
 );

 int NWNX_Redis_EXPIREAT(
     string key,
     // Redis type: posix time
     string timestamp
 );

 int NWNX_Redis_FLUSHALL(
     // Redis type: enum
     string async = ""
 );

 int NWNX_Redis_FLUSHDB(
     // Redis type: enum
     string async = ""
 );

 int NWNX_Redis_GEOADD(
     string key,
     // Redis type: double
     float longitude,
     // Redis type: double
     float latitude,
     string member
 );

 int NWNX_Redis_GEOHASH(
     string key,
     string member
 );

 int NWNX_Redis_GEOPOS(
     string key,
     string member
 );

 int NWNX_Redis_GEODIST(
     string key,
     string member1,
     string member2,
     string unit = ""
 );

 int NWNX_Redis_GEORADIUS(
     string key,
     // Redis type: double
     float longitude,
     // Redis type: double
     float latitude,
     // Redis type: double
     float radius,
     // Redis type: enum
     string unit,
     // Redis type: enum
     string withcoord = "",
     // Redis type: enum
     string withdist = "",
     // Redis type: enum
     string withhash = "",
     // Redis type: integer
     int count_count = 0,
     // Redis type: enum
     string order = "",
     // Redis type: key
     string store_key = "",
     // Redis type: key
     string storedist_key = ""
 );

 int NWNX_Redis_GEORADIUSBYMEMBER(
     string key,
     string member,
     // Redis type: double
     float radius,
     // Redis type: enum
     string unit,
     // Redis type: enum
     string withcoord = "",
     // Redis type: enum
     string withdist = "",
     // Redis type: enum
     string withhash = "",
     // Redis type: integer
     int count_count = 0,
     // Redis type: enum
     string order = "",
     // Redis type: key
     string store_key = "",
     // Redis type: key
     string storedist_key = ""
 );

 int NWNX_Redis_GET(
     string key
 );

 int NWNX_Redis_GETBIT(
     string key,
     // Redis type: integer
     int offset
 );

 int NWNX_Redis_GETRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int end
 );

 int NWNX_Redis_GETSET(
     string key,
     string value
 );

 int NWNX_Redis_HDEL(
     string key,
     string field
 );

 int NWNX_Redis_HEXISTS(
     string key,
     string field
 );

 int NWNX_Redis_HGET(
     string key,
     string field
 );

 int NWNX_Redis_HGETALL(
     string key
 );

 int NWNX_Redis_HINCRBY(
     string key,
     string field,
     // Redis type: integer
     int increment
 );

 int NWNX_Redis_HINCRBYFLOAT(
     string key,
     string field,
     // Redis type: double
     float increment
 );

 int NWNX_Redis_HKEYS(
     string key
 );

 int NWNX_Redis_HLEN(
     string key
 );

 int NWNX_Redis_HMGET(
     string key,
     string field
 );

 int NWNX_Redis_HMSET(
     string key,
     string field,
     string value
 );

 int NWNX_Redis_HSET(
     string key,
     string field,
     string value
 );

 int NWNX_Redis_HSETNX(
     string key,
     string field,
     string value
 );

 int NWNX_Redis_HSTRLEN(
     string key,
     string field
 );

 int NWNX_Redis_HVALS(
     string key
 );

 int NWNX_Redis_INCR(
     string key
 );

 int NWNX_Redis_INCRBY(
     string key,
     // Redis type: integer
     int increment
 );

 int NWNX_Redis_INCRBYFLOAT(
     string key,
     // Redis type: double
     float increment
 );

 int NWNX_Redis_INFO(
     string section = ""
 );

 int NWNX_Redis_KEYS(
     string pattern
 );

 int NWNX_Redis_LASTSAVE();

 int NWNX_Redis_LINDEX(
     string key,
     // Redis type: integer
     int index
 );

 int NWNX_Redis_LINSERT(
     string key,
     // Redis type: enum
     string where,
     string pivot,
     string value
 );

 int NWNX_Redis_LLEN(
     string key
 );

 int NWNX_Redis_LPOP(
     string key
 );

 int NWNX_Redis_LPUSH(
     string key,
     string value
 );

 int NWNX_Redis_LPUSHX(
     string key,
     string value
 );

 int NWNX_Redis_LRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop
 );

 int NWNX_Redis_LREM(
     string key,
     // Redis type: integer
     int count,
     string value
 );

 int NWNX_Redis_LSET(
     string key,
     // Redis type: integer
     int index,
     string value
 );

 int NWNX_Redis_LTRIM(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop
 );

 int NWNX_Redis_MEMORY_DOCTOR();

 int NWNX_Redis_MEMORY_HELP();

 int NWNX_Redis_MEMORY_MALLOC_STATS();

 int NWNX_Redis_MEMORY_PURGE();

 int NWNX_Redis_MEMORY_STATS();

 int NWNX_Redis_MEMORY_USAGE(
     string key,
     // Redis type: integer
     int samples_count = 0
 );

 int NWNX_Redis_MGET(
     string key
 );

 int NWNX_Redis_MIGRATE(
     string host,
     string port,
     // Redis type: enum
     string key,
     // Redis type: integer
     int destination_db,
     // Redis type: integer
     int timeout,
     // Redis type: enum
     string copy = "",
     // Redis type: enum
     string replace = "",
     string auth_password = "",
     // Redis type: key
     string keys_key = ""
 );

 int NWNX_Redis_MONITOR();

 int NWNX_Redis_MOVE(
     string key,
     // Redis type: integer
     int db
 );

 int NWNX_Redis_MSET(
     string key,
     string value
 );

 int NWNX_Redis_MSETNX(
     string key,
     string value
 );

 int NWNX_Redis_MULTI();

 int NWNX_Redis_OBJECT(
     string subcommand,
     string arguments = ""
 );

 int NWNX_Redis_PERSIST(
     string key
 );

 int NWNX_Redis_PEXPIRE(
     string key,
     // Redis type: integer
     int milliseconds
 );

 int NWNX_Redis_PEXPIREAT(
     string key,
     // Redis type: posix time
     string milliseconds_timestamp
 );

 int NWNX_Redis_PFADD(
     string key,
     string element
 );

 int NWNX_Redis_PFCOUNT(
     string key
 );

 int NWNX_Redis_PFMERGE(
     // Redis type: key
     string destkey,
     // Redis type: key
     string sourcekey
 );

 int NWNX_Redis_PING(
     string message = ""
 );

 int NWNX_Redis_PSETEX(
     string key,
     // Redis type: integer
     int milliseconds,
     string value
 );

 int NWNX_Redis_PUBSUB(
     string subcommand,
     string argument = ""
 );

 int NWNX_Redis_PTTL(
     string key
 );

 int NWNX_Redis_PUBLISH(
     string channel,
     string message
 );

 int NWNX_Redis_QUIT();

 int NWNX_Redis_RANDOMKEY();

 int NWNX_Redis_READONLY();

 int NWNX_Redis_READWRITE();

 int NWNX_Redis_RENAME(
     string key,
     // Redis type: key
     string newkey
 );

 int NWNX_Redis_RENAMENX(
     string key,
     // Redis type: key
     string newkey
 );

 int NWNX_Redis_RESTORE(
     string key,
     // Redis type: integer
     int ttl,
     string serialized_value,
     // Redis type: enum
     string replace = "",
     // Redis type: enum
     string absttl = "",
     // Redis type: integer
     int idletime_seconds = 0,
     // Redis type: integer
     int freq_frequency = 0
 );

 int NWNX_Redis_ROLE();

 int NWNX_Redis_RPOP(
     string key
 );

 int NWNX_Redis_RPOPLPUSH(
     // Redis type: key
     string source,
     // Redis type: key
     string destination
 );

 int NWNX_Redis_RPUSH(
     string key,
     string value
 );

 int NWNX_Redis_RPUSHX(
     string key,
     string value
 );

 int NWNX_Redis_SADD(
     string key,
     string member
 );

 int NWNX_Redis_SAVE();

 int NWNX_Redis_SCARD(
     string key
 );

 int NWNX_Redis_SCRIPT_DEBUG(
     // Redis type: enum
     string mode
 );

 int NWNX_Redis_SCRIPT_EXISTS(
     string sha1
 );

 int NWNX_Redis_SCRIPT_FLUSH();

 int NWNX_Redis_SCRIPT_KILL();

 int NWNX_Redis_SCRIPT_LOAD(
     string script
 );

 int NWNX_Redis_SDIFF(
     string key
 );

 int NWNX_Redis_SDIFFSTORE(
     // Redis type: key
     string destination,
     string key
 );

 int NWNX_Redis_SELECT(
     // Redis type: integer
     int index
 );

 int NWNX_Redis_SET(
     string key,
     string value,
     // Redis type: enum
     string condition = ""
 );

 int NWNX_Redis_SETBIT(
     string key,
     // Redis type: integer
     int offset,
     string value
 );

 int NWNX_Redis_SETEX(
     string key,
     // Redis type: integer
     int seconds,
     string value
 );

 int NWNX_Redis_SETNX(
     string key,
     string value
 );

 int NWNX_Redis_SETRANGE(
     string key,
     // Redis type: integer
     int offset,
     string value
 );

 int NWNX_Redis_SHUTDOWN(
     // Redis type: enum
     string save_mode = ""
 );

 int NWNX_Redis_SINTER(
     string key
 );

 int NWNX_Redis_SINTERSTORE(
     // Redis type: key
     string destination,
     string key
 );

 int NWNX_Redis_SISMEMBER(
     string key,
     string member
 );

 int NWNX_Redis_SLAVEOF(
     string host,
     string port
 );

 int NWNX_Redis_REPLICAOF(
     string host,
     string port
 );

 int NWNX_Redis_SLOWLOG(
     string subcommand,
     string argument = ""
 );

 int NWNX_Redis_SMEMBERS(
     string key
 );

 int NWNX_Redis_SMOVE(
     // Redis type: key
     string source,
     // Redis type: key
     string destination,
     string member
 );

 int NWNX_Redis_SORT(
     string key,
     // Redis type: pattern
     string by_pattern = "",
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0,
     string get_pattern = "",
     // Redis type: enum
     string order = "",
     // Redis type: enum
     string sorting = "",
     // Redis type: key
     string store_destination = ""
 );

 int NWNX_Redis_SPOP(
     string key,
     // Redis type: integer
     int count = 0
 );

 int NWNX_Redis_SRANDMEMBER(
     string key,
     // Redis type: integer
     int count = 0
 );

 int NWNX_Redis_SREM(
     string key,
     string member
 );

 int NWNX_Redis_STRLEN(
     string key
 );

 int NWNX_Redis_SUNION(
     string key
 );

 int NWNX_Redis_SUNIONSTORE(
     // Redis type: key
     string destination,
     string key
 );

 int NWNX_Redis_SWAPDB(
     // Redis type: integer
     int index,
     // Redis type: integer
     int index_1
 );

 int NWNX_Redis_SYNC();

 int NWNX_Redis_TIME();

 int NWNX_Redis_TOUCH(
     string key
 );

 int NWNX_Redis_TTL(
     string key
 );

 int NWNX_Redis_TYPE(
     string key
 );

 int NWNX_Redis_UNLINK(
     string key
 );

 int NWNX_Redis_UNWATCH();

 int NWNX_Redis_WAIT(
     // Redis type: integer
     int numreplicas,
     // Redis type: integer
     int timeout
 );

 int NWNX_Redis_WATCH(
     string key
 );

 int NWNX_Redis_ZADD(
     string key,
     // Redis type: enum
     string condition = "",
     // Redis type: enum
     string change = "",
     // Redis type: enum
     string increment = "",
     // Redis type: double
     float score = 0.0,
     string member = ""
 );

 int NWNX_Redis_ZCARD(
     string key
 );

 int NWNX_Redis_ZCOUNT(
     string key,
     // Redis type: double
     float min,
     // Redis type: double
     float max
 );

 int NWNX_Redis_ZINCRBY(
     string key,
     // Redis type: integer
     int increment,
     string member
 );

 int NWNX_Redis_ZINTERSTORE(
     // Redis type: key
     string destination,
     // Redis type: integer
     int numkeys,
     string key,
     // Redis type: integer
     int weights_weight = 0,
     // Redis type: enum
     string aggregate_aggregate = ""
 );

 int NWNX_Redis_ZLEXCOUNT(
     string key,
     string min,
     string max
 );

 int NWNX_Redis_ZPOPMAX(
     string key,
     // Redis type: integer
     int count = 0
 );

 int NWNX_Redis_ZPOPMIN(
     string key,
     // Redis type: integer
     int count = 0
 );

 int NWNX_Redis_ZRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop,
     // Redis type: enum
     string withscores = ""
 );

 int NWNX_Redis_ZRANGEBYLEX(
     string key,
     string min,
     string max,
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 );

 int NWNX_Redis_ZREVRANGEBYLEX(
     string key,
     string max,
     string min,
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 );

 int NWNX_Redis_ZRANGEBYSCORE(
     string key,
     // Redis type: double
     float min,
     // Redis type: double
     float max,
     // Redis type: enum
     string withscores = "",
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 );

 int NWNX_Redis_ZRANK(
     string key,
     string member
 );

 int NWNX_Redis_ZREM(
     string key,
     string member
 );

 int NWNX_Redis_ZREMRANGEBYLEX(
     string key,
     string min,
     string max
 );

 int NWNX_Redis_ZREMRANGEBYRANK(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop
 );

 int NWNX_Redis_ZREMRANGEBYSCORE(
     string key,
     // Redis type: double
     float min,
     // Redis type: double
     float max
 );

 int NWNX_Redis_ZREVRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop,
     // Redis type: enum
     string withscores = ""
 );

 int NWNX_Redis_ZREVRANGEBYSCORE(
     string key,
     // Redis type: double
     float max,
     // Redis type: double
     float min,
     // Redis type: enum
     string withscores = "",
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 );

 int NWNX_Redis_ZREVRANK(
     string key,
     string member
 );

 int NWNX_Redis_ZSCORE(
     string key,
     string member
 );

 int NWNX_Redis_ZUNIONSTORE(
     // Redis type: key
     string destination,
     // Redis type: integer
     int numkeys,
     string key,
     // Redis type: integer
     int weights_weight = 0,
     // Redis type: enum
     string aggregate_aggregate = ""
 );

 int NWNX_Redis_SCAN(
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0,
     string type_type = ""
 );

 int NWNX_Redis_SSCAN(
     string key,
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0
 );

 int NWNX_Redis_HSCAN(
     string key,
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0
 );

 int NWNX_Redis_ZSCAN(
     string key,
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0
 );

 int NWNX_Redis_XINFO(
     // Redis type: key
     string consumers_key = "",
     string consumers_groupname = "",
     // Redis type: key
     string groups_key = "",
     // Redis type: key
     string stream_key = "",
     // Redis type: enum
     string help = ""
 );

 int NWNX_Redis_XADD(
     string key,
     string ID,
     // Redis type: value
     string field,
     string str
 );

 int NWNX_Redis_XTRIM(
     string key,
     // Redis type: enum
     string strategy,
     // Redis type: enum
     string approx = "",
     // Redis type: integer
     int count = 0
 );

 int NWNX_Redis_XDEL(
     string key,
     string ID
 );

 int NWNX_Redis_XRANGE(
     string key,
     string start,
     string end,
     // Redis type: integer
     int count_count = 0
 );

 int NWNX_Redis_XREVRANGE(
     string key,
     string end,
     string start,
     // Redis type: integer
     int count_count = 0
 );

 int NWNX_Redis_XLEN(
     string key
 );

 int NWNX_Redis_XREAD(
     // Redis type: integer
     int count_count = 0,
     // Redis type: integer
     int block_milliseconds = 0,
     // Redis type: enum
     string streams = "",
     string key = "",
     string ID = ""
 );

 int NWNX_Redis_XGROUP(
     // Redis type: key
     string create_key = "",
     string create_groupname = "",
     string create_id_or__ = "",
     // Redis type: key
     string setid_key = "",
     string setid_groupname = "",
     string setid_id_or__ = "",
     // Redis type: key
     string destroy_key = "",
     string destroy_groupname = "",
     // Redis type: key
     string delconsumer_key = "",
     string delconsumer_groupname = "",
     string delconsumer_consumername = ""
 );

 int NWNX_Redis_XREADGROUP(
     string group_group,
     string group_consumer,
     // Redis type: integer
     int count_count = 0,
     // Redis type: integer
     int block_milliseconds = 0,
     // Redis type: enum
     string noack = "",
     // Redis type: enum
     string streams = "",
     string key = "",
     string ID = ""
 );

 int NWNX_Redis_XACK(
     string key,
     string group,
     string ID
 );

 int NWNX_Redis_XCLAIM(
     string key,
     string group,
     string consumer,
     string min_idle_time,
     string ID,
     // Redis type: integer
     int idle_ms = 0,
     // Redis type: integer
     int time_ms_unix_time = 0,
     // Redis type: integer
     int retrycount_count = 0
 );

 int NWNX_Redis_XPENDING(
     string key,
     string group,
     string start = "",
     string end = "",
     // Redis type: integer
     int count = 0,
     string consumer = ""
 );



 // Implementation below
 int NWNX_Redis_APPEND(
     string key,
     string value
 ) {
   NWNXPushString("APPEND");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_AUTH(
     string password
 ) {
   NWNXPushString("AUTH");
   NWNXPushString(password);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BGREWRITEAOF() {
   NWNXPushString("BGREWRITEAOF");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BGSAVE() {
   NWNXPushString("BGSAVE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BITCOUNT(
     string key,
     // Redis type: integer
     int start = 0,
     // Redis type: integer
     int end = 0
 ) {
   NWNXPushString("BITCOUNT");
   NWNXPushString(key);
   if (start != 0) NWNXPushString(IntToString(start));
   if (end != 0) NWNXPushString(IntToString(end));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BITFIELD(
     string key,
     // Redis type: type
     string get_type = "",
     // Redis type: integer
     int get_offset = 0,
     // Redis type: type
     string set_type = "",
     // Redis type: integer
     int set_offset = 0,
     // Redis type: integer
     int set_value = 0,
     // Redis type: type
     string incrby_type = "",
     // Redis type: integer
     int incrby_offset = 0,
     // Redis type: integer
     int incrby_increment = 0
 ) {
   NWNXPushString("BITFIELD");
   NWNXPushString(key);
   if (get_type != "") NWNXPushString(get_type);
   if (get_offset != 0) NWNXPushString(IntToString(get_offset));
   if (set_type != "") NWNXPushString(set_type);
   if (set_offset != 0) NWNXPushString(IntToString(set_offset));
   if (set_value != 0) NWNXPushString(IntToString(set_value));
   if (incrby_type != "") NWNXPushString(incrby_type);
   if (incrby_offset != 0) NWNXPushString(IntToString(incrby_offset));
   if (incrby_increment != 0) NWNXPushString(IntToString(incrby_increment));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BITOP(
     string operation,
     // Redis type: key
     string destkey,
     string key
 ) {
   NWNXPushString("BITOP");
   NWNXPushString(operation);
   NWNXPushString(destkey);
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BITPOS(
     string key,
     // Redis type: integer
     int bit,
     // Redis type: integer
     int start = 0,
     // Redis type: integer
     int end = 0
 ) {
   NWNXPushString("BITPOS");
   NWNXPushString(key);
   NWNXPushString(IntToString(bit));
   if (start != 0) NWNXPushString(IntToString(start));
   if (end != 0) NWNXPushString(IntToString(end));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BLPOP(
     string key,
     // Redis type: integer
     int timeout
 ) {
   NWNXPushString("BLPOP");
   NWNXPushString(key);
   NWNXPushString(IntToString(timeout));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BRPOP(
     string key,
     // Redis type: integer
     int timeout
 ) {
   NWNXPushString("BRPOP");
   NWNXPushString(key);
   NWNXPushString(IntToString(timeout));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BRPOPLPUSH(
     // Redis type: key
     string source,
     // Redis type: key
     string destination,
     // Redis type: integer
     int timeout
 ) {
   NWNXPushString("BRPOPLPUSH");
   NWNXPushString(source);
   NWNXPushString(destination);
   NWNXPushString(IntToString(timeout));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BZPOPMIN(
     string key,
     // Redis type: integer
     int timeout
 ) {
   NWNXPushString("BZPOPMIN");
   NWNXPushString(key);
   NWNXPushString(IntToString(timeout));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_BZPOPMAX(
     string key,
     // Redis type: integer
     int timeout
 ) {
   NWNXPushString("BZPOPMAX");
   NWNXPushString(key);
   NWNXPushString(IntToString(timeout));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_ID() {
   NWNXPushString("CLIENT_ID");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_KILL(
     string ip_port = "",
     // Redis type: integer
     int id_client_id = 0,
     string addr_ip_port = "",
     string skipme_yes_no = ""
 ) {
   NWNXPushString("CLIENT_KILL");
   if (ip_port != "") NWNXPushString(ip_port);
   if (id_client_id != 0) NWNXPushString(IntToString(id_client_id));
   if (addr_ip_port != "") NWNXPushString(addr_ip_port);
   if (skipme_yes_no != "") NWNXPushString(skipme_yes_no);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_LIST() {
   NWNXPushString("CLIENT_LIST");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_GETNAME() {
   NWNXPushString("CLIENT_GETNAME");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_PAUSE(
     // Redis type: integer
     int timeout
 ) {
   NWNXPushString("CLIENT_PAUSE");
   NWNXPushString(IntToString(timeout));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_REPLY(
     // Redis type: enum
     string reply_mode
 ) {
   NWNXPushString("CLIENT_REPLY");
   NWNXPushString(reply_mode);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_SETNAME(
     string connection_name
 ) {
   NWNXPushString("CLIENT_SETNAME");
   NWNXPushString(connection_name);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLIENT_UNBLOCK(
     string client_id,
     // Redis type: enum
     string unblock_type = ""
 ) {
   NWNXPushString("CLIENT_UNBLOCK");
   NWNXPushString(client_id);
   if (unblock_type != "") NWNXPushString(unblock_type);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_ADDSLOTS(
     // Redis type: integer
     int slot
 ) {
   NWNXPushString("CLUSTER_ADDSLOTS");
   NWNXPushString(IntToString(slot));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_COUNT_FAILURE_REPORTS(
     string node_id
 ) {
   NWNXPushString("CLUSTER_COUNT_FAILURE_REPORTS");
   NWNXPushString(node_id);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_COUNTKEYSINSLOT(
     // Redis type: integer
     int slot
 ) {
   NWNXPushString("CLUSTER_COUNTKEYSINSLOT");
   NWNXPushString(IntToString(slot));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_DELSLOTS(
     // Redis type: integer
     int slot
 ) {
   NWNXPushString("CLUSTER_DELSLOTS");
   NWNXPushString(IntToString(slot));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_FAILOVER(
     // Redis type: enum
     string options = ""
 ) {
   NWNXPushString("CLUSTER_FAILOVER");
   if (options != "") NWNXPushString(options);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_FORGET(
     string node_id
 ) {
   NWNXPushString("CLUSTER_FORGET");
   NWNXPushString(node_id);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_GETKEYSINSLOT(
     // Redis type: integer
     int slot,
     // Redis type: integer
     int count
 ) {
   NWNXPushString("CLUSTER_GETKEYSINSLOT");
   NWNXPushString(IntToString(slot));
   NWNXPushString(IntToString(count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_INFO() {
   NWNXPushString("CLUSTER_INFO");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_KEYSLOT(
     string key
 ) {
   NWNXPushString("CLUSTER_KEYSLOT");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_MEET(
     string ip,
     // Redis type: integer
     int port
 ) {
   NWNXPushString("CLUSTER_MEET");
   NWNXPushString(ip);
   NWNXPushString(IntToString(port));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_NODES() {
   NWNXPushString("CLUSTER_NODES");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_REPLICATE(
     string node_id
 ) {
   NWNXPushString("CLUSTER_REPLICATE");
   NWNXPushString(node_id);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_RESET(
     // Redis type: enum
     string reset_type = ""
 ) {
   NWNXPushString("CLUSTER_RESET");
   if (reset_type != "") NWNXPushString(reset_type);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_SAVECONFIG() {
   NWNXPushString("CLUSTER_SAVECONFIG");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_SET_CONFIG_EPOCH(
     // Redis type: integer
     int config_epoch
 ) {
   NWNXPushString("CLUSTER_SET_CONFIG_EPOCH");
   NWNXPushString(IntToString(config_epoch));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_SETSLOT(
     // Redis type: integer
     int slot,
     // Redis type: enum
     string subcommand,
     string node_id = ""
 ) {
   NWNXPushString("CLUSTER_SETSLOT");
   NWNXPushString(IntToString(slot));
   NWNXPushString(subcommand);
   if (node_id != "") NWNXPushString(node_id);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_SLAVES(
     string node_id
 ) {
   NWNXPushString("CLUSTER_SLAVES");
   NWNXPushString(node_id);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_REPLICAS(
     string node_id
 ) {
   NWNXPushString("CLUSTER_REPLICAS");
   NWNXPushString(node_id);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CLUSTER_SLOTS() {
   NWNXPushString("CLUSTER_SLOTS");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_COMMAND() {
   NWNXPushString("COMMAND");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_COMMAND_COUNT() {
   NWNXPushString("COMMAND_COUNT");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_COMMAND_GETKEYS() {
   NWNXPushString("COMMAND_GETKEYS");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_COMMAND_INFO(
     string command_name
 ) {
   NWNXPushString("COMMAND_INFO");
   NWNXPushString(command_name);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CONFIG_GET(
     string parameter
 ) {
   NWNXPushString("CONFIG_GET");
   NWNXPushString(parameter);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CONFIG_REWRITE() {
   NWNXPushString("CONFIG_REWRITE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CONFIG_SET(
     string parameter,
     string value
 ) {
   NWNXPushString("CONFIG_SET");
   NWNXPushString(parameter);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_CONFIG_RESETSTAT() {
   NWNXPushString("CONFIG_RESETSTAT");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DBSIZE() {
   NWNXPushString("DBSIZE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DEBUG_OBJECT(
     string key
 ) {
   NWNXPushString("DEBUG_OBJECT");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DEBUG_SEGFAULT() {
   NWNXPushString("DEBUG_SEGFAULT");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DECR(
     string key
 ) {
   NWNXPushString("DECR");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DECRBY(
     string key,
     // Redis type: integer
     int decrement
 ) {
   NWNXPushString("DECRBY");
   NWNXPushString(key);
   NWNXPushString(IntToString(decrement));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DEL(
     string key
 ) {
   NWNXPushString("DEL");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DISCARD() {
   NWNXPushString("DISCARD");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_DUMP(
     string key
 ) {
   NWNXPushString("DUMP");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ECHO(
     string message
 ) {
   NWNXPushString("ECHO");
   NWNXPushString(message);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_EVAL(
     string script,
     // Redis type: integer
     int numkeys,
     string key,
     string arg
 ) {
   NWNXPushString("EVAL");
   NWNXPushString(script);
   NWNXPushString(IntToString(numkeys));
   NWNXPushString(key);
   NWNXPushString(arg);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_EVALSHA(
     string sha1,
     // Redis type: integer
     int numkeys,
     string key,
     string arg
 ) {
   NWNXPushString("EVALSHA");
   NWNXPushString(sha1);
   NWNXPushString(IntToString(numkeys));
   NWNXPushString(key);
   NWNXPushString(arg);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_EXEC() {
   NWNXPushString("EXEC");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_EXISTS(
     string key
 ) {
   NWNXPushString("EXISTS");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_EXPIRE(
     string key,
     // Redis type: integer
     int seconds
 ) {
   NWNXPushString("EXPIRE");
   NWNXPushString(key);
   NWNXPushString(IntToString(seconds));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_EXPIREAT(
     string key,
     // Redis type: posix time
     string timestamp
 ) {
   NWNXPushString("EXPIREAT");
   NWNXPushString(key);
   NWNXPushString(timestamp);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_FLUSHALL(
     // Redis type: enum
     string async = ""
 ) {
   NWNXPushString("FLUSHALL");
   if (async != "") NWNXPushString(async);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_FLUSHDB(
     // Redis type: enum
     string async = ""
 ) {
   NWNXPushString("FLUSHDB");
   if (async != "") NWNXPushString(async);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GEOADD(
     string key,
     // Redis type: double
     float longitude,
     // Redis type: double
     float latitude,
     string member
 ) {
   NWNXPushString("GEOADD");
   NWNXPushString(key);
   NWNXPushString(FloatToString(longitude, 0));
   NWNXPushString(FloatToString(latitude, 0));
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GEOHASH(
     string key,
     string member
 ) {
   NWNXPushString("GEOHASH");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GEOPOS(
     string key,
     string member
 ) {
   NWNXPushString("GEOPOS");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GEODIST(
     string key,
     string member1,
     string member2,
     string unit = ""
 ) {
   NWNXPushString("GEODIST");
   NWNXPushString(key);
   NWNXPushString(member1);
   NWNXPushString(member2);
   if (unit != "") NWNXPushString(unit);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GEORADIUS(
     string key,
     // Redis type: double
     float longitude,
     // Redis type: double
     float latitude,
     // Redis type: double
     float radius,
     // Redis type: enum
     string unit,
     // Redis type: enum
     string withcoord = "",
     // Redis type: enum
     string withdist = "",
     // Redis type: enum
     string withhash = "",
     // Redis type: integer
     int count_count = 0,
     // Redis type: enum
     string order = "",
     // Redis type: key
     string store_key = "",
     // Redis type: key
     string storedist_key = ""
 ) {
   NWNXPushString("GEORADIUS");
   NWNXPushString(key);
   NWNXPushString(FloatToString(longitude, 0));
   NWNXPushString(FloatToString(latitude, 0));
   NWNXPushString(FloatToString(radius, 0));
   NWNXPushString(unit);
   if (withcoord != "") NWNXPushString(withcoord);
   if (withdist != "") NWNXPushString(withdist);
   if (withhash != "") NWNXPushString(withhash);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   if (order != "") NWNXPushString(order);
   if (store_key != "") NWNXPushString(store_key);
   if (storedist_key != "") NWNXPushString(storedist_key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GEORADIUSBYMEMBER(
     string key,
     string member,
     // Redis type: double
     float radius,
     // Redis type: enum
     string unit,
     // Redis type: enum
     string withcoord = "",
     // Redis type: enum
     string withdist = "",
     // Redis type: enum
     string withhash = "",
     // Redis type: integer
     int count_count = 0,
     // Redis type: enum
     string order = "",
     // Redis type: key
     string store_key = "",
     // Redis type: key
     string storedist_key = ""
 ) {
   NWNXPushString("GEORADIUSBYMEMBER");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXPushString(FloatToString(radius, 0));
   NWNXPushString(unit);
   if (withcoord != "") NWNXPushString(withcoord);
   if (withdist != "") NWNXPushString(withdist);
   if (withhash != "") NWNXPushString(withhash);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   if (order != "") NWNXPushString(order);
   if (store_key != "") NWNXPushString(store_key);
   if (storedist_key != "") NWNXPushString(storedist_key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GET(
     string key
 ) {
   NWNXPushString("GET");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GETBIT(
     string key,
     // Redis type: integer
     int offset
 ) {
   NWNXPushString("GETBIT");
   NWNXPushString(key);
   NWNXPushString(IntToString(offset));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GETRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int end
 ) {
   NWNXPushString("GETRANGE");
   NWNXPushString(key);
   NWNXPushString(IntToString(start));
   NWNXPushString(IntToString(end));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_GETSET(
     string key,
     string value
 ) {
   NWNXPushString("GETSET");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HDEL(
     string key,
     string field
 ) {
   NWNXPushString("HDEL");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HEXISTS(
     string key,
     string field
 ) {
   NWNXPushString("HEXISTS");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HGET(
     string key,
     string field
 ) {
   NWNXPushString("HGET");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HGETALL(
     string key
 ) {
   NWNXPushString("HGETALL");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HINCRBY(
     string key,
     string field,
     // Redis type: integer
     int increment
 ) {
   NWNXPushString("HINCRBY");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXPushString(IntToString(increment));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HINCRBYFLOAT(
     string key,
     string field,
     // Redis type: double
     float increment
 ) {
   NWNXPushString("HINCRBYFLOAT");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXPushString(FloatToString(increment, 0));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HKEYS(
     string key
 ) {
   NWNXPushString("HKEYS");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HLEN(
     string key
 ) {
   NWNXPushString("HLEN");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HMGET(
     string key,
     string field
 ) {
   NWNXPushString("HMGET");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HMSET(
     string key,
     string field,
     string value
 ) {
   NWNXPushString("HMSET");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HSET(
     string key,
     string field,
     string value
 ) {
   NWNXPushString("HSET");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HSETNX(
     string key,
     string field,
     string value
 ) {
   NWNXPushString("HSETNX");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HSTRLEN(
     string key,
     string field
 ) {
   NWNXPushString("HSTRLEN");
   NWNXPushString(key);
   NWNXPushString(field);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HVALS(
     string key
 ) {
   NWNXPushString("HVALS");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_INCR(
     string key
 ) {
   NWNXPushString("INCR");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_INCRBY(
     string key,
     // Redis type: integer
     int increment
 ) {
   NWNXPushString("INCRBY");
   NWNXPushString(key);
   NWNXPushString(IntToString(increment));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_INCRBYFLOAT(
     string key,
     // Redis type: double
     float increment
 ) {
   NWNXPushString("INCRBYFLOAT");
   NWNXPushString(key);
   NWNXPushString(FloatToString(increment, 0));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_INFO(
     string section = ""
 ) {
   NWNXPushString("INFO");
   if (section != "") NWNXPushString(section);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_KEYS(
     string pattern
 ) {
   NWNXPushString("KEYS");
   NWNXPushString(pattern);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LASTSAVE() {
   NWNXPushString("LASTSAVE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LINDEX(
     string key,
     // Redis type: integer
     int index
 ) {
   NWNXPushString("LINDEX");
   NWNXPushString(key);
   NWNXPushString(IntToString(index));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LINSERT(
     string key,
     // Redis type: enum
     string where,
     string pivot,
     string value
 ) {
   NWNXPushString("LINSERT");
   NWNXPushString(key);
   NWNXPushString(where);
   NWNXPushString(pivot);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LLEN(
     string key
 ) {
   NWNXPushString("LLEN");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LPOP(
     string key
 ) {
   NWNXPushString("LPOP");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LPUSH(
     string key,
     string value
 ) {
   NWNXPushString("LPUSH");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LPUSHX(
     string key,
     string value
 ) {
   NWNXPushString("LPUSHX");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop
 ) {
   NWNXPushString("LRANGE");
   NWNXPushString(key);
   NWNXPushString(IntToString(start));
   NWNXPushString(IntToString(stop));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LREM(
     string key,
     // Redis type: integer
     int count,
     string value
 ) {
   NWNXPushString("LREM");
   NWNXPushString(key);
   NWNXPushString(IntToString(count));
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LSET(
     string key,
     // Redis type: integer
     int index,
     string value
 ) {
   NWNXPushString("LSET");
   NWNXPushString(key);
   NWNXPushString(IntToString(index));
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_LTRIM(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop
 ) {
   NWNXPushString("LTRIM");
   NWNXPushString(key);
   NWNXPushString(IntToString(start));
   NWNXPushString(IntToString(stop));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MEMORY_DOCTOR() {
   NWNXPushString("MEMORY_DOCTOR");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MEMORY_HELP() {
   NWNXPushString("MEMORY_HELP");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MEMORY_MALLOC_STATS() {
   NWNXPushString("MEMORY_MALLOC_STATS");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MEMORY_PURGE() {
   NWNXPushString("MEMORY_PURGE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MEMORY_STATS() {
   NWNXPushString("MEMORY_STATS");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MEMORY_USAGE(
     string key,
     // Redis type: integer
     int samples_count = 0
 ) {
   NWNXPushString("MEMORY_USAGE");
   NWNXPushString(key);
   if (samples_count != 0) NWNXPushString(IntToString(samples_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MGET(
     string key
 ) {
   NWNXPushString("MGET");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MIGRATE(
     string host,
     string port,
     // Redis type: enum
     string key,
     // Redis type: integer
     int destination_db,
     // Redis type: integer
     int timeout,
     // Redis type: enum
     string copy = "",
     // Redis type: enum
     string replace = "",
     string auth_password = "",
     // Redis type: key
     string keys_key = ""
 ) {
   NWNXPushString("MIGRATE");
   NWNXPushString(host);
   NWNXPushString(port);
   NWNXPushString(key);
   NWNXPushString(IntToString(destination_db));
   NWNXPushString(IntToString(timeout));
   if (copy != "") NWNXPushString(copy);
   if (replace != "") NWNXPushString(replace);
   if (auth_password != "") NWNXPushString(auth_password);
   if (keys_key != "") NWNXPushString(keys_key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MONITOR() {
   NWNXPushString("MONITOR");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MOVE(
     string key,
     // Redis type: integer
     int db
 ) {
   NWNXPushString("MOVE");
   NWNXPushString(key);
   NWNXPushString(IntToString(db));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MSET(
     string key,
     string value
 ) {
   NWNXPushString("MSET");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MSETNX(
     string key,
     string value
 ) {
   NWNXPushString("MSETNX");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_MULTI() {
   NWNXPushString("MULTI");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_OBJECT(
     string subcommand,
     string arguments = ""
 ) {
   NWNXPushString("OBJECT");
   NWNXPushString(subcommand);
   if (arguments != "") NWNXPushString(arguments);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PERSIST(
     string key
 ) {
   NWNXPushString("PERSIST");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PEXPIRE(
     string key,
     // Redis type: integer
     int milliseconds
 ) {
   NWNXPushString("PEXPIRE");
   NWNXPushString(key);
   NWNXPushString(IntToString(milliseconds));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PEXPIREAT(
     string key,
     // Redis type: posix time
     string milliseconds_timestamp
 ) {
   NWNXPushString("PEXPIREAT");
   NWNXPushString(key);
   NWNXPushString(milliseconds_timestamp);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PFADD(
     string key,
     string element
 ) {
   NWNXPushString("PFADD");
   NWNXPushString(key);
   NWNXPushString(element);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PFCOUNT(
     string key
 ) {
   NWNXPushString("PFCOUNT");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PFMERGE(
     // Redis type: key
     string destkey,
     // Redis type: key
     string sourcekey
 ) {
   NWNXPushString("PFMERGE");
   NWNXPushString(destkey);
   NWNXPushString(sourcekey);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PING(
     string message = ""
 ) {
   NWNXPushString("PING");
   if (message != "") NWNXPushString(message);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PSETEX(
     string key,
     // Redis type: integer
     int milliseconds,
     string value
 ) {
   NWNXPushString("PSETEX");
   NWNXPushString(key);
   NWNXPushString(IntToString(milliseconds));
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PUBSUB(
     string subcommand,
     string argument = ""
 ) {
   NWNXPushString("PUBSUB");
   NWNXPushString(subcommand);
   if (argument != "") NWNXPushString(argument);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PTTL(
     string key
 ) {
   NWNXPushString("PTTL");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_PUBLISH(
     string channel,
     string message
 ) {
   NWNXPushString("PUBLISH");
   NWNXPushString(channel);
   NWNXPushString(message);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_QUIT() {
   NWNXPushString("QUIT");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RANDOMKEY() {
   NWNXPushString("RANDOMKEY");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_READONLY() {
   NWNXPushString("READONLY");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_READWRITE() {
   NWNXPushString("READWRITE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RENAME(
     string key,
     // Redis type: key
     string newkey
 ) {
   NWNXPushString("RENAME");
   NWNXPushString(key);
   NWNXPushString(newkey);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RENAMENX(
     string key,
     // Redis type: key
     string newkey
 ) {
   NWNXPushString("RENAMENX");
   NWNXPushString(key);
   NWNXPushString(newkey);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RESTORE(
     string key,
     // Redis type: integer
     int ttl,
     string serialized_value,
     // Redis type: enum
     string replace = "",
     // Redis type: enum
     string absttl = "",
     // Redis type: integer
     int idletime_seconds = 0,
     // Redis type: integer
     int freq_frequency = 0
 ) {
   NWNXPushString("RESTORE");
   NWNXPushString(key);
   NWNXPushString(IntToString(ttl));
   NWNXPushString(serialized_value);
   if (replace != "") NWNXPushString(replace);
   if (absttl != "") NWNXPushString(absttl);
   if (idletime_seconds != 0) NWNXPushString(IntToString(idletime_seconds));
   if (freq_frequency != 0) NWNXPushString(IntToString(freq_frequency));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ROLE() {
   NWNXPushString("ROLE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RPOP(
     string key
 ) {
   NWNXPushString("RPOP");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RPOPLPUSH(
     // Redis type: key
     string source,
     // Redis type: key
     string destination
 ) {
   NWNXPushString("RPOPLPUSH");
   NWNXPushString(source);
   NWNXPushString(destination);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RPUSH(
     string key,
     string value
 ) {
   NWNXPushString("RPUSH");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_RPUSHX(
     string key,
     string value
 ) {
   NWNXPushString("RPUSHX");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SADD(
     string key,
     string member
 ) {
   NWNXPushString("SADD");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SAVE() {
   NWNXPushString("SAVE");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SCARD(
     string key
 ) {
   NWNXPushString("SCARD");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SCRIPT_DEBUG(
     // Redis type: enum
     string mode
 ) {
   NWNXPushString("SCRIPT_DEBUG");
   NWNXPushString(mode);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SCRIPT_EXISTS(
     string sha1
 ) {
   NWNXPushString("SCRIPT_EXISTS");
   NWNXPushString(sha1);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SCRIPT_FLUSH() {
   NWNXPushString("SCRIPT_FLUSH");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SCRIPT_KILL() {
   NWNXPushString("SCRIPT_KILL");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SCRIPT_LOAD(
     string script
 ) {
   NWNXPushString("SCRIPT_LOAD");
   NWNXPushString(script);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SDIFF(
     string key
 ) {
   NWNXPushString("SDIFF");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SDIFFSTORE(
     // Redis type: key
     string destination,
     string key
 ) {
   NWNXPushString("SDIFFSTORE");
   NWNXPushString(destination);
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SELECT(
     // Redis type: integer
     int index
 ) {
   NWNXPushString("SELECT");
   NWNXPushString(IntToString(index));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SET(
     string key,
     string value,
     // Redis type: enum
     string condition = ""
 ) {
   NWNXPushString("SET");
   NWNXPushString(key);
   NWNXPushString(value);
   if (condition != "") NWNXPushString(condition);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SETBIT(
     string key,
     // Redis type: integer
     int offset,
     string value
 ) {
   NWNXPushString("SETBIT");
   NWNXPushString(key);
   NWNXPushString(IntToString(offset));
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SETEX(
     string key,
     // Redis type: integer
     int seconds,
     string value
 ) {
   NWNXPushString("SETEX");
   NWNXPushString(key);
   NWNXPushString(IntToString(seconds));
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SETNX(
     string key,
     string value
 ) {
   NWNXPushString("SETNX");
   NWNXPushString(key);
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SETRANGE(
     string key,
     // Redis type: integer
     int offset,
     string value
 ) {
   NWNXPushString("SETRANGE");
   NWNXPushString(key);
   NWNXPushString(IntToString(offset));
   NWNXPushString(value);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SHUTDOWN(
     // Redis type: enum
     string save_mode = ""
 ) {
   NWNXPushString("SHUTDOWN");
   if (save_mode != "") NWNXPushString(save_mode);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SINTER(
     string key
 ) {
   NWNXPushString("SINTER");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SINTERSTORE(
     // Redis type: key
     string destination,
     string key
 ) {
   NWNXPushString("SINTERSTORE");
   NWNXPushString(destination);
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SISMEMBER(
     string key,
     string member
 ) {
   NWNXPushString("SISMEMBER");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SLAVEOF(
     string host,
     string port
 ) {
   NWNXPushString("SLAVEOF");
   NWNXPushString(host);
   NWNXPushString(port);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_REPLICAOF(
     string host,
     string port
 ) {
   NWNXPushString("REPLICAOF");
   NWNXPushString(host);
   NWNXPushString(port);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SLOWLOG(
     string subcommand,
     string argument = ""
 ) {
   NWNXPushString("SLOWLOG");
   NWNXPushString(subcommand);
   if (argument != "") NWNXPushString(argument);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SMEMBERS(
     string key
 ) {
   NWNXPushString("SMEMBERS");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SMOVE(
     // Redis type: key
     string source,
     // Redis type: key
     string destination,
     string member
 ) {
   NWNXPushString("SMOVE");
   NWNXPushString(source);
   NWNXPushString(destination);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SORT(
     string key,
     // Redis type: pattern
     string by_pattern = "",
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0,
     string get_pattern = "",
     // Redis type: enum
     string order = "",
     // Redis type: enum
     string sorting = "",
     // Redis type: key
     string store_destination = ""
 ) {
   NWNXPushString("SORT");
   NWNXPushString(key);
   if (by_pattern != "") NWNXPushString(by_pattern);
   if (limit_offset != 0) NWNXPushString(IntToString(limit_offset));
   if (limit_count != 0) NWNXPushString(IntToString(limit_count));
   if (get_pattern != "") NWNXPushString(get_pattern);
   if (order != "") NWNXPushString(order);
   if (sorting != "") NWNXPushString(sorting);
   if (store_destination != "") NWNXPushString(store_destination);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SPOP(
     string key,
     // Redis type: integer
     int count = 0
 ) {
   NWNXPushString("SPOP");
   NWNXPushString(key);
   if (count != 0) NWNXPushString(IntToString(count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SRANDMEMBER(
     string key,
     // Redis type: integer
     int count = 0
 ) {
   NWNXPushString("SRANDMEMBER");
   NWNXPushString(key);
   if (count != 0) NWNXPushString(IntToString(count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SREM(
     string key,
     string member
 ) {
   NWNXPushString("SREM");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_STRLEN(
     string key
 ) {
   NWNXPushString("STRLEN");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SUNION(
     string key
 ) {
   NWNXPushString("SUNION");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SUNIONSTORE(
     // Redis type: key
     string destination,
     string key
 ) {
   NWNXPushString("SUNIONSTORE");
   NWNXPushString(destination);
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SWAPDB(
     // Redis type: integer
     int index,
     // Redis type: integer
     int index_1
 ) {
   NWNXPushString("SWAPDB");
   NWNXPushString(IntToString(index));
   NWNXPushString(IntToString(index_1));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SYNC() {
   NWNXPushString("SYNC");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_TIME() {
   NWNXPushString("TIME");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_TOUCH(
     string key
 ) {
   NWNXPushString("TOUCH");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_TTL(
     string key
 ) {
   NWNXPushString("TTL");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_TYPE(
     string key
 ) {
   NWNXPushString("TYPE");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_UNLINK(
     string key
 ) {
   NWNXPushString("UNLINK");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_UNWATCH() {
   NWNXPushString("UNWATCH");
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_WAIT(
     // Redis type: integer
     int numreplicas,
     // Redis type: integer
     int timeout
 ) {
   NWNXPushString("WAIT");
   NWNXPushString(IntToString(numreplicas));
   NWNXPushString(IntToString(timeout));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_WATCH(
     string key
 ) {
   NWNXPushString("WATCH");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZADD(
     string key,
     // Redis type: enum
     string condition = "",
     // Redis type: enum
     string change = "",
     // Redis type: enum
     string increment = "",
     // Redis type: double
     float score = 0.0,
     string member = ""
 ) {
   NWNXPushString("ZADD");
   NWNXPushString(key);
   if (condition != "") NWNXPushString(condition);
   if (change != "") NWNXPushString(change);
   if (increment != "") NWNXPushString(increment);
   NWNXPushString(FloatToString(score, 0));
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZCARD(
     string key
 ) {
   NWNXPushString("ZCARD");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZCOUNT(
     string key,
     // Redis type: double
     float min,
     // Redis type: double
     float max
 ) {
   NWNXPushString("ZCOUNT");
   NWNXPushString(key);
   NWNXPushString(FloatToString(min, 0));
   NWNXPushString(FloatToString(max, 0));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZINCRBY(
     string key,
     // Redis type: integer
     int increment,
     string member
 ) {
   NWNXPushString("ZINCRBY");
   NWNXPushString(key);
   NWNXPushString(IntToString(increment));
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZINTERSTORE(
     // Redis type: key
     string destination,
     // Redis type: integer
     int numkeys,
     string key,
     // Redis type: integer
     int weights_weight = 0,
     // Redis type: enum
     string aggregate_aggregate = ""
 ) {
   NWNXPushString("ZINTERSTORE");
   NWNXPushString(destination);
   NWNXPushString(IntToString(numkeys));
   NWNXPushString(key);
   if (weights_weight != 0) NWNXPushString(IntToString(weights_weight));
   if (aggregate_aggregate != "") NWNXPushString(aggregate_aggregate);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZLEXCOUNT(
     string key,
     string min,
     string max
 ) {
   NWNXPushString("ZLEXCOUNT");
   NWNXPushString(key);
   NWNXPushString(min);
   NWNXPushString(max);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZPOPMAX(
     string key,
     // Redis type: integer
     int count = 0
 ) {
   NWNXPushString("ZPOPMAX");
   NWNXPushString(key);
   if (count != 0) NWNXPushString(IntToString(count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZPOPMIN(
     string key,
     // Redis type: integer
     int count = 0
 ) {
   NWNXPushString("ZPOPMIN");
   NWNXPushString(key);
   if (count != 0) NWNXPushString(IntToString(count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop,
     // Redis type: enum
     string withscores = ""
 ) {
   NWNXPushString("ZRANGE");
   NWNXPushString(key);
   NWNXPushString(IntToString(start));
   NWNXPushString(IntToString(stop));
   if (withscores != "") NWNXPushString(withscores);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZRANGEBYLEX(
     string key,
     string min,
     string max,
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 ) {
   NWNXPushString("ZRANGEBYLEX");
   NWNXPushString(key);
   NWNXPushString(min);
   NWNXPushString(max);
   if (limit_offset != 0) NWNXPushString(IntToString(limit_offset));
   if (limit_count != 0) NWNXPushString(IntToString(limit_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREVRANGEBYLEX(
     string key,
     string max,
     string min,
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 ) {
   NWNXPushString("ZREVRANGEBYLEX");
   NWNXPushString(key);
   NWNXPushString(max);
   NWNXPushString(min);
   if (limit_offset != 0) NWNXPushString(IntToString(limit_offset));
   if (limit_count != 0) NWNXPushString(IntToString(limit_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZRANGEBYSCORE(
     string key,
     // Redis type: double
     float min,
     // Redis type: double
     float max,
     // Redis type: enum
     string withscores = "",
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 ) {
   NWNXPushString("ZRANGEBYSCORE");
   NWNXPushString(key);
   NWNXPushString(FloatToString(min, 0));
   NWNXPushString(FloatToString(max, 0));
   if (withscores != "") NWNXPushString(withscores);
   if (limit_offset != 0) NWNXPushString(IntToString(limit_offset));
   if (limit_count != 0) NWNXPushString(IntToString(limit_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZRANK(
     string key,
     string member
 ) {
   NWNXPushString("ZRANK");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREM(
     string key,
     string member
 ) {
   NWNXPushString("ZREM");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREMRANGEBYLEX(
     string key,
     string min,
     string max
 ) {
   NWNXPushString("ZREMRANGEBYLEX");
   NWNXPushString(key);
   NWNXPushString(min);
   NWNXPushString(max);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREMRANGEBYRANK(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop
 ) {
   NWNXPushString("ZREMRANGEBYRANK");
   NWNXPushString(key);
   NWNXPushString(IntToString(start));
   NWNXPushString(IntToString(stop));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREMRANGEBYSCORE(
     string key,
     // Redis type: double
     float min,
     // Redis type: double
     float max
 ) {
   NWNXPushString("ZREMRANGEBYSCORE");
   NWNXPushString(key);
   NWNXPushString(FloatToString(min, 0));
   NWNXPushString(FloatToString(max, 0));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREVRANGE(
     string key,
     // Redis type: integer
     int start,
     // Redis type: integer
     int stop,
     // Redis type: enum
     string withscores = ""
 ) {
   NWNXPushString("ZREVRANGE");
   NWNXPushString(key);
   NWNXPushString(IntToString(start));
   NWNXPushString(IntToString(stop));
   if (withscores != "") NWNXPushString(withscores);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREVRANGEBYSCORE(
     string key,
     // Redis type: double
     float max,
     // Redis type: double
     float min,
     // Redis type: enum
     string withscores = "",
     // Redis type: integer
     int limit_offset = 0,
     // Redis type: integer
     int limit_count = 0
 ) {
   NWNXPushString("ZREVRANGEBYSCORE");
   NWNXPushString(key);
   NWNXPushString(FloatToString(max, 0));
   NWNXPushString(FloatToString(min, 0));
   if (withscores != "") NWNXPushString(withscores);
   if (limit_offset != 0) NWNXPushString(IntToString(limit_offset));
   if (limit_count != 0) NWNXPushString(IntToString(limit_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZREVRANK(
     string key,
     string member
 ) {
   NWNXPushString("ZREVRANK");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZSCORE(
     string key,
     string member
 ) {
   NWNXPushString("ZSCORE");
   NWNXPushString(key);
   NWNXPushString(member);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZUNIONSTORE(
     // Redis type: key
     string destination,
     // Redis type: integer
     int numkeys,
     string key,
     // Redis type: integer
     int weights_weight = 0,
     // Redis type: enum
     string aggregate_aggregate = ""
 ) {
   NWNXPushString("ZUNIONSTORE");
   NWNXPushString(destination);
   NWNXPushString(IntToString(numkeys));
   NWNXPushString(key);
   if (weights_weight != 0) NWNXPushString(IntToString(weights_weight));
   if (aggregate_aggregate != "") NWNXPushString(aggregate_aggregate);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SCAN(
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0,
     string type_type = ""
 ) {
   NWNXPushString("SCAN");
   NWNXPushString(IntToString(cursor));
   if (match_pattern != "") NWNXPushString(match_pattern);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   if (type_type != "") NWNXPushString(type_type);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_SSCAN(
     string key,
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0
 ) {
   NWNXPushString("SSCAN");
   NWNXPushString(key);
   NWNXPushString(IntToString(cursor));
   if (match_pattern != "") NWNXPushString(match_pattern);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_HSCAN(
     string key,
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0
 ) {
   NWNXPushString("HSCAN");
   NWNXPushString(key);
   NWNXPushString(IntToString(cursor));
   if (match_pattern != "") NWNXPushString(match_pattern);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_ZSCAN(
     string key,
     // Redis type: integer
     int cursor,
     // Redis type: pattern
     string match_pattern = "",
     // Redis type: integer
     int count_count = 0
 ) {
   NWNXPushString("ZSCAN");
   NWNXPushString(key);
   NWNXPushString(IntToString(cursor));
   if (match_pattern != "") NWNXPushString(match_pattern);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XINFO(
     // Redis type: key
     string consumers_key = "",
     string consumers_groupname = "",
     // Redis type: key
     string groups_key = "",
     // Redis type: key
     string stream_key = "",
     // Redis type: enum
     string help = ""
 ) {
   NWNXPushString("XINFO");
   if (consumers_key != "") NWNXPushString(consumers_key);
   if (consumers_groupname != "") NWNXPushString(consumers_groupname);
   if (groups_key != "") NWNXPushString(groups_key);
   if (stream_key != "") NWNXPushString(stream_key);
   if (help != "") NWNXPushString(help);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XADD(
     string key,
     string ID,
     // Redis type: value
     string field,
     string str
 ) {
   NWNXPushString("XADD");
   NWNXPushString(key);
   NWNXPushString(ID);
   NWNXPushString(field);
   NWNXPushString(str);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XTRIM(
     string key,
     // Redis type: enum
     string strategy,
     // Redis type: enum
     string approx = "",
     // Redis type: integer
     int count = 0
 ) {
   NWNXPushString("XTRIM");
   NWNXPushString(key);
   NWNXPushString(strategy);
   if (approx != "") NWNXPushString(approx);
   NWNXPushString(IntToString(count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XDEL(
     string key,
     string ID
 ) {
   NWNXPushString("XDEL");
   NWNXPushString(key);
   NWNXPushString(ID);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XRANGE(
     string key,
     string start,
     string end,
     // Redis type: integer
     int count_count = 0
 ) {
   NWNXPushString("XRANGE");
   NWNXPushString(key);
   NWNXPushString(start);
   NWNXPushString(end);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XREVRANGE(
     string key,
     string end,
     string start,
     // Redis type: integer
     int count_count = 0
 ) {
   NWNXPushString("XREVRANGE");
   NWNXPushString(key);
   NWNXPushString(end);
   NWNXPushString(start);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XLEN(
     string key
 ) {
   NWNXPushString("XLEN");
   NWNXPushString(key);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XREAD(
     // Redis type: integer
     int count_count = 0,
     // Redis type: integer
     int block_milliseconds = 0,
     // Redis type: enum
     string streams = "",
     string key = "",
     string ID = ""
 ) {
   NWNXPushString("XREAD");
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   if (block_milliseconds != 0) NWNXPushString(IntToString(block_milliseconds));
   NWNXPushString(streams);
   NWNXPushString(key);
   NWNXPushString(ID);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XGROUP(
     // Redis type: key
     string create_key = "",
     string create_groupname = "",
     string create_id_or__ = "",
     // Redis type: key
     string setid_key = "",
     string setid_groupname = "",
     string setid_id_or__ = "",
     // Redis type: key
     string destroy_key = "",
     string destroy_groupname = "",
     // Redis type: key
     string delconsumer_key = "",
     string delconsumer_groupname = "",
     string delconsumer_consumername = ""
 ) {
   NWNXPushString("XGROUP");
   if (create_key != "") NWNXPushString(create_key);
   if (create_groupname != "") NWNXPushString(create_groupname);
   if (create_id_or__ != "") NWNXPushString(create_id_or__);
   if (setid_key != "") NWNXPushString(setid_key);
   if (setid_groupname != "") NWNXPushString(setid_groupname);
   if (setid_id_or__ != "") NWNXPushString(setid_id_or__);
   if (destroy_key != "") NWNXPushString(destroy_key);
   if (destroy_groupname != "") NWNXPushString(destroy_groupname);
   if (delconsumer_key != "") NWNXPushString(delconsumer_key);
   if (delconsumer_groupname != "") NWNXPushString(delconsumer_groupname);
   if (delconsumer_consumername != "") NWNXPushString(delconsumer_consumername);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XREADGROUP(
     string group_group,
     string group_consumer,
     // Redis type: integer
     int count_count = 0,
     // Redis type: integer
     int block_milliseconds = 0,
     // Redis type: enum
     string noack = "",
     // Redis type: enum
     string streams = "",
     string key = "",
     string ID = ""
 ) {
   NWNXPushString("XREADGROUP");
   NWNXPushString(group_group);
   NWNXPushString(group_consumer);
   if (count_count != 0) NWNXPushString(IntToString(count_count));
   if (block_milliseconds != 0) NWNXPushString(IntToString(block_milliseconds));
   if (noack != "") NWNXPushString(noack);
   NWNXPushString(streams);
   NWNXPushString(key);
   NWNXPushString(ID);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XACK(
     string key,
     string group,
     string ID
 ) {
   NWNXPushString("XACK");
   NWNXPushString(key);
   NWNXPushString(group);
   NWNXPushString(ID);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XCLAIM(
     string key,
     string group,
     string consumer,
     string min_idle_time,
     string ID,
     // Redis type: integer
     int idle_ms = 0,
     // Redis type: integer
     int time_ms_unix_time = 0,
     // Redis type: integer
     int retrycount_count = 0
 ) {
   NWNXPushString("XCLAIM");
   NWNXPushString(key);
   NWNXPushString(group);
   NWNXPushString(consumer);
   NWNXPushString(min_idle_time);
   NWNXPushString(ID);
   if (idle_ms != 0) NWNXPushString(IntToString(idle_ms));
   if (time_ms_unix_time != 0) NWNXPushString(IntToString(time_ms_unix_time));
   if (retrycount_count != 0) NWNXPushString(IntToString(retrycount_count));
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }

 int NWNX_Redis_XPENDING(
     string key,
     string group,
     string start = "",
     string end = "",
     // Redis type: integer
     int count = 0,
     string consumer = ""
 ) {
   NWNXPushString("XPENDING");
   NWNXPushString(key);
   NWNXPushString(group);
   if (start != "") NWNXPushString(start);
   if (end != "") NWNXPushString(end);
   if (count != 0) NWNXPushString(IntToString(count));
   if (consumer != "") NWNXPushString(consumer);
   NWNXCall("NWNX_Redis", "Deferred");
   return NWNXPopInt();
 }
// copied from https://nwnxee.github.io/unified/nwnx__redis__lib_8nss_source.html

 const int NWNX_REDIS_RESULT_ARRAY       = 1;


 const int NWNX_REDIS_RESULT_ERROR       = 3;

 const int NWNX_REDIS_RESULT_INTEGER     = 4;

 const int NWNX_REDIS_RESULT_STRING      = 5;

 const int NWNX_REDIS_RESULT_NULL        = 6;

 int NWNX_Redis_GetResultType(int resultId);

 int NWNX_Redis_GetArrayLength(int resultId);

 int NWNX_Redis_GetArrayElement(int resultId, int idx);

 float NWNX_Redis_GetResultAsFloat(int resultId);

 int NWNX_Redis_GetResultAsInt(int resultId);

 string NWNX_Redis_GetResultAsString(int resultId);


 int NWNX_Redis_GetResultType(int resultId)
 {
     NWNXPushInt(resultId);
     NWNXCall("NWNX_Redis", "GetResultType");
     return NWNXPopInt();
 }

 int NWNX_Redis_GetArrayLength(int resultId)
 {
     NWNXPushInt(resultId);
     NWNXCall("NWNX_Redis", "GetResultArrayLength");
     return NWNXPopInt();
 }

 // Returns the last
 int NWNX_Redis_GetArrayElement(int resultId, int idx)
 {
     NWNXPushInt(resultId);
     NWNXPushInt(idx);
     NWNXCall("NWNX_Redis", "GetResultArrayElement");
     return NWNXPopInt();
 }

 float NWNX_Redis_GetResultAsFloat(int resultId)
 {
     NWNXPushInt(resultId);
     NWNXCall("NWNX_Redis", "GetResultAsString");
     return StringToFloat(NWNXPopString());
 }

 int NWNX_Redis_GetResultAsInt(int resultId)
 {
     NWNXPushInt(resultId);
     NWNXCall("NWNX_Redis", "GetResultAsString");
     return StringToInt(NWNXPopString());
 }

 string NWNX_Redis_GetResultAsString(int resultId)
 {
     NWNXPushInt(resultId);
     NWNXCall("NWNX_Redis", "GetResultAsString");
     return NWNXPopString();
 }
NCS V1.0B         F    G         ? !tell #   @   I   ;       >           B                    ?     ;         >              *"                         player       npc_tag       message       
nwn_to_llm    1     v         RPUSH      Deferred 
NWNX_Redis             #include "nwnx_redis"

void main()
{
    object oPC = GetPCChatSpeaker();
    string sMessage = GetPCChatMessage();

    if (GetStringLeft(sMessage, 6) == "!tell ")
    {
        SetPCChatMessage("");
        string sContent = GetStringRight(sMessage, GetStringLength(sMessage) - 6);
        int nSpaceLoc = FindSubString(sContent, " ");

        if (nSpaceLoc == -1) return;

        string sNpcTag = GetStringLeft(sContent, nSpaceLoc);
        string sPlayerMsg = GetStringRight(sContent, GetStringLength(sContent) - nSpaceLoc - 1);

        object oNPC = GetObjectByTag(sNpcTag);
        if (!GetIsObjectValid(oNPC)) return;

        json jData = JsonObject();
        jData = JsonObjectSet(jData, "player", JsonString(GetName(oPC)));
        jData = JsonObjectSet(jData, "npc_tag", JsonString(sNpcTag));
        jData = JsonObjectSet(jData, "message", JsonString(sPlayerMsg));

        // Use the official function!
        NWNX_Redis_RPUSH("nwn_to_llm", JsonDump(jData));

        SendMessageToPC(oPC, "");
    }
}
ITP V3.28      d  2                     l                                                                  (          0          8          @          H          P          X          `          h          p          x                                                                                                                         /                 ~                                    8         	                  
                                             #                  #                          <                             !                  "                  #                  $                                                     T                                                                                <                 }            MAIN            STRREF          ID              LIST                                    	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1                              	   
                                                   FAC V3.28      p  M          5     4    l   <                                      $         0          D         P         \         h         t                                          	         
                                                                                 (                      
                         
                        
                        
                        
      )                                                                           2                            2                            2                           d                                                                                                                                           d                           2                           d                                                       2                           d                           d                                                       2                           d                           d   FactionList     FactionParentID FactionName     FactionGlobal   RepList         FactionID1      FactionID2      FactionRep         PC   Hostile   Commoner   Merchant   Defender                        	   
                                                                          !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L                                 	   
                                                ITP V3.28                  @      @  `     8                                                                  (          0          8          @          H          P          X                       &                  9                                                                                                              !                  "                  #                  $                              MAIN            STRREF          ID              LIST                                    	   
                                                                              	   
      ITP V3.28            L             8     $                                                                  (          0                                                                              !                  "                  #                  $            MAIN            STRREF          ID              LIST                                    	   
                                          ARE V3.28   A   D    H#  5   &  9   &  
  }1        +         
         
         
      $  
      L  
      t  
        
        
        
        
      <  
      d  
        
        
        
        
      ,  
      T  
      |  
        
        
        
        
      D  
      l  
        
        
        
        
      4  
      \  
        
        
        
        
      $  
      L  
      t  
        
        
        
        
      <  
      d  
        
        
        
        
      ,  
      T  
      |  
        
        
        
      	  
      D	  
      l	  
      	  
      	  
      	  
      
  
      4
  
      \
  
      
  
                         
                
         $   
      +                         	          
             <<<                                                                                                                      <           4B                                                                                       !          "         #         $   /      %   0      &   1      '   2       (          )   3      *         +   ^      ,         -           .           /          0          1          2          3          4         +   ^      ,         -           .          /           0          1          2          3          4         +   ^      ,         -           .          /           0          1          2          3          4         +   ^      ,         -           .           /          0          1          2          3          4         +   ^      ,          -           .           /           0          1          2          3          4         +   ^      ,          -           .           /          0           1           2          3          4         +   ^      ,          -           .           /           0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   ^      ,          -           .          /           0           1           2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   ^      ,         -           .          /          0          1          2          3          4         +   ^      ,         -           .          /           0          1          2          3          4         +   ^      ,         -           .          /          0          1          2          3          4         +   ^      ,         -           .          /           0          1          2          3          4         +   ^      ,          -           .           /          0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   .      ,         -           .          /          0          1          2          3          4         +         ,         -           .           /          0           1           2          3          4         +         ,         -           .           /          0          1          2          3          4         +   `      ,         -           .           /          0          1          2          3          4         +   :      ,          -           .           /           0          1          2          3          4         +   )      ,         -           .          /           0           1           2          3          4         +   ^      ,          -           .          /           0           1           2          3          4         +   ^      ,         -           .           /          0           1           2          3          4         +   k      ,         -           .          /           0          1          2          3          4         +   1      ,          -           .          /          0          1          2          3          4         +   6      ,         -           .           /          0          1          2          3          4         +   W      ,         -           .           /          0          1          2          3          4         +         ,          -           .           /           0          1          2          3          4         +   ?      ,          -           .          /           0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   c      ,         -           .           /          0           1           2          3          4         +   4      ,         -           .          /           0          1          2          3          4         +         ,         -           .          /          0          1          2          3          4         +         ,         -           .          /           0          1          2          3          4         +         ,          -           .           /           0          1          2          3          4         +   >      ,          -           .           /           0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   ^      ,         -           .          /          0          1          2          3          4         +   ^      ,          -           .           /          0          1          2          3          4         +         ,         -           .           /           0           1           2          3          4         +   %      ,         -           .          /           0           1           2          3          4         +         ,         -           .           /           0           1           2          3          4         +         ,         -           .          /           0           1           2          3          4         +         ,         -           .          /           0          1          2          3          4         +   ^      ,         -           .          /           0          1          2          3          4         +   ^      ,         -           .           /          0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   !     ,         -           .          /           0          1          2          3          4         +         ,         -           .          /          0           1           2          3          4         +         ,         -           .           /           0           1           2          3          4         +         ,         -           .          /           0          1          2          3          4         +         ,          -           .          /           0          1          2          3          4         +   ^      ,          -           .           /          0          1          2          3          4         +   ^      ,         -           .          /          0          1          2          3          4         +   ^      ,          -           .           /          0           1           2          3          4         +   ^      ,         -           .          /          0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4         +   ^      ,         -           .           /          0          1          2          3          4         +   ^      ,         -           .           /           0           1           2          3          4         +   ^      ,         -           .          /          0          1          2          3          4         +   ^      ,         -           .           /           0          1          2          3          4      ID              Creator_ID      Version         Tag             Name            ResRef          Comments        Expansion_List  Flags           ModSpotCheck    ModListenCheck  MoonAmbientColorMoonDiffuseColorMoonFogAmount   MoonFogColor    MoonShadows     SunAmbientColor SunDiffuseColor SunFogAmount    SunFogColor     SunShadows      IsNight         LightingScheme  ShadowOpacity   FogClipDist     SkyBox          DayNightCycle   ChanceRain      ChanceSnow      ChanceLightning WindPower       LoadScreenID    PlayerVsPlayer  NoRest          Width           Height          OnEnter         OnExit          OnHeartbeat     OnUserDefined   TileBrdrDisabledTileset         Tile_List       Tile_ID         Tile_OrientationTile_Height     Tile_MainLight1 Tile_MainLight2 Tile_SrcLight1  Tile_SrcLight2  Tile_AnimLoop1  Tile_AnimLoop2  Tile_AnimLoop3     Tavern             Taverntavern        tin01                            	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~                                                                                                                                                                                                                                                                                                                                                                                                                         	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~                                                                                                                                                                                                                                                                                       	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~                                                                                              @                           	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   GIC V3.28              
   X  b     $     P       	                                                                                                                 
          
                  
         
         
      &   
      5   
      D         $         (         ,         0         4         8   
      R   
      V   
      Z   
      ^      	   L   Creature List   Comment         Door List       Encounter List  List            SoundList       StoreList       TriggerList     WaypointList    Placeable List             Strong Door   Strong Door   Strong Door   Strong Door
   Cloth Door                       	   
                                                                       	   
          GIT V3.28          d7    G    tO    |^        
   d   (   	      L   q       v          w          x          y          z          {          |          }          ~                                                                                                                                                                                                                                                                                                                                                                                          0        <        H        T        `        l        x                                                                                                                         ,        8        D         L                          H        d  @       d                                  \     @   x                         \                                            `        |          F                                                                                                                                                                                                                                                                                          	        
  5      
  5        5        5      T  5      (        `                                     H         H                                       (                        	   _    
             YB      B      
#<      }H=                                	         %                                       t         =   
      I         U                                  
      V   
      Z          S      !          "           #           $           %           &           '           (           )         *         +         ,          -         .          /         0          1         2          3         4          5         6          7         8          9         :          ;          <           =         >          ?         @          A         B          C         D          E         F          G          H           I          J           K         L          M         N          O         P          Q          R          S          T          U          V          W          X          Y   
       Z         [          \          ]   i      ^   i      _         `          a          b           c   d       d          e     A   f           g         h   ^      i   o      j   ~      k         l         m         n         o         p         q         r         s   	     t        u          v           v          v           v          v          v          v          v          v          v           v   &       v          v          v          v           v           v          v           v          v          v          v          v          v          v           v           v           v          w         x         x         x   p     x         x   g     x        x         x         x        x   b     x   A     x         x         x         x         x        x          x   )      x   .      y         z         {         |         }         ~            !                              %                              d                                                                                                   V                              f                                                                                                  9                             x                                                                     !                             N                                                                                         4                                      X                              x                                                           H        y                              C                                                         |         }            X                                            ?      )                 6        B        N  
      Z                   p                          #                                                                ?         ?                            d                                                                   d                                                                 ?      j                 w                  
                         *                          #                                             !         !                                               l        8                                                           d                            t                                            ?                                         
                                                   #                                          +         ,                                                                                                                               1         1                                                                                                                                                                                                                                         %                    %                                                                                                d                                             ?                               
          
      "                   W                          #                                                                                                              )                                                           d                                             ?      5        $         E        Q        ]  
      i                                              #                                                                        4                                                           d                                             ?      |        P                           
                                                   #                                                                 k          k          k          k          E          E                 4                            
                              d                                             ?              4                           
                                                   #                                                                                                         ?                                       )  
      5                   /                          #                                                                       %                                                             d         %                                                             d         %                                                             d                                             ?      G                 V        b        n  
      z                   o                          #                                              	         	                                                                            d                                             ?                                         
                                              c       #                                                                                                             B      L\B         5      Hy        ?                                                                     \           
              
                                
        
                     !         "          #           $           %          &           '           (           )          *           U   
       V   
       W   
       X   
       Y   
       Z   
      [          \          ]         ^         _         `          a          b           c   2       d   2      e     >   f           g         h        i   "     j   1     k   @     l   O     m   ^     n   m     o   |     p        q        r        s        t        u         v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v           v          w   L     x   .      x        x   (      y   \     z   `     {   d     |         }            l        p  
                                                                  %                   #                                                                                                                                  
                                                                                                                !        /        0        1        2        3        4        5        6        7        8  
      9                                      =        (pA        4B      33?      ?
      >        Q        ]        i                              y      %                   #                                                                                                                                     
      z                                                                                         ~                                                                                                  
                                                      pB        4B                ɿ
                                                                  %                   #                                                                                                                                     
                                                                                                                                                                                                 
                                                      pB        A                ?
                              '                              7      %                   #                                                                                                                                    
      8                                                                                         <        =        >        L        M        N        O        P        Q        R        S        T        U  
      V                                      Z          4B      RA                I
      [        m        y                                            %                   #                                                                                                   
                                   
                                                                                                                                                                                                 
                                                      B        HB                	u                                                         
                
                                                         A      jB         4                  ?          
                
                                       (                  QB      &B       ;                  ?          
      4        8  
      9        N        Z                 f                  }A      +A                          ?          
      r        v  
      w                                                   
WB      A       ;                  ?       AreaProperties  AmbientSndDay   AmbientSndNight AmbientSndDayVolAmbientSndNitVolEnvAudio        MusicBattle     MusicDay        MusicNight      MusicDelay      Creature List   XPosition       YPosition       ZPosition       XOrientation    YOrientation    TemplateResRef  Race            FirstName       LastName        Appearance_Type Gender          Phenotype       PortraitId      Description     Tag             Conversation    IsPC            FactionID       Disarmable      Subrace         Deity           Wings_New       Tail_New        SoundSetFile    Plot            IsImmortal      Interruptable   Lootable        NoPermDeath     BodyBag         StartingPackage DecayTime       ArmorPart_RFoot xArmorPart_RFootBodyPart_LFoot  xBodyPart_LFoot BodyPart_RShin  xBodyPart_RShin BodyPart_LShin  xBodyPart_LShin BodyPart_LThigh xBodyPart_LThighBodyPart_RThigh xBodyPart_RThighBodyPart_Pelvis xBodyPart_PelvisBodyPart_Torso  xBodyPart_Torso BodyPart_Belt   xBodyPart_Belt  BodyPart_Neck   xBodyPart_Neck  BodyPart_RFArm  xBodyPart_RFArm BodyPart_LFArm  xBodyPart_LFArm BodyPart_RBicep xBodyPart_RBicepBodyPart_LBicep xBodyPart_LBicepBodyPart_RShoul xBodyPart_RShoulBodyPart_LShoul xBodyPart_LShoulBodyPart_RHand  xBodyPart_RHand BodyPart_LHand  xBodyPart_LHand Appearance_Head xAppearance_HeadColor_Skin      Color_Hair      Color_Tattoo1   Color_Tattoo2   Str             Dex             Con             Int             Wis             Cha             WalkRate        NaturalAC       HitPoints       CurrentHitPointsMaxHitPoints    refbonus        willbonus       fortbonus       GoodEvil        LawfulChaotic   ChallengeRating CRAdjust        PerceptionRange ScriptHeartbeat ScriptOnNotice  ScriptSpellAt   ScriptAttacked  ScriptDamaged   ScriptDisturbed ScriptEndRound  ScriptDialogue  ScriptSpawn     ScriptRested    ScriptDeath     ScriptUserDefineScriptOnBlocked SkillList       Rank            FeatList        Feat            TemplateList    SpecAbilityList ClassList       Class           ClassLevel      KnownList0      Spell           SpellMetaMagic  SpellFlags      KnownList1      KnownList2      KnownList3      KnownList4      KnownList5      ItemList        BaseItem        LocalizedName   DescIdentified  Charges         Cost            Stolen          StackSize       AddCost         Identified      Cursed          ModelPart1      xModelPart1     ModelPart2      xModelPart2     ModelPart3      xModelPart3     PropertiesList  PropertyName    Subtype         CostTable       CostValue       Param1          Param1Value     ChanceAppear    Repos_PosX      Repos_Posy      Equip_ItemList  ArmorPart_LFoot xArmorPart_LFootArmorPart_RShin xArmorPart_RShinArmorPart_LShin xArmorPart_LShinArmorPart_LThighxArmorPart_LThigArmorPart_RThighxArmorPart_RThigArmorPart_PelvisxArmorPart_PelviArmorPart_Torso xArmorPart_TorsoArmorPart_Belt  xArmorPart_Belt ArmorPart_Neck  xArmorPart_Neck ArmorPart_RFArm xArmorPart_RFArmArmorPart_LFArm xArmorPart_LFArmArmorPart_RBicepxArmorPart_RBiceArmorPart_LBicepxArmorPart_LBiceArmorPart_RShoulxArmorPart_RShouArmorPart_LShoulxArmorPart_LShouArmorPart_RHand xArmorPart_RHandArmorPart_LHand xArmorPart_LHandArmorPart_Robe  xArmorPart_Robe Leather1Color   Leather2Color   Cloth1Color     Cloth2Color     Metal1Color     Metal2Color     Door List       LocName         AutoRemoveKey   CloseLockDC     Faction         KeyRequired     Lockable        Locked          OpenLockDC      TrapDetectable  TrapDetectDC    TrapDisarmable  DisarmDC        TrapFlag        TrapOneShot     TrapType        KeyName         AnimationState  Appearance      HP              CurrentHP       Hardness        Fort            Ref             Will            OnClosed        OnDamaged       OnDeath         OnDisarm        OnHeartbeat     OnLock          OnMeleeAttacked OnOpen          OnSpellCastAt   OnTrapTriggered OnUnlock        OnUserDefined   OnClick         LinkedTo        LinkedToFlags   LoadScreenID    GenericType_New OnFailToOpen    X               Y               Z               Bearing         Encounter List  List            SoundList       StoreList       TriggerList     WaypointList    HasMapNote      MapNote         MapNoteEnabled  Placeable List  elrendur             Elrendur             Arna          Elrendur         x2_def_heartbeatx2_def_perceptx2_def_spellcastx2_def_attackedx2_def_ondamagex2_def_ondisturbx2_def_endcombatx2_def_onconvx2_def_spawnx2_def_restedx2_def_ondeathx2_def_userdefx2_def_onblockednw_wswmls002   
8                3         NW_WSWMLS002nw_wbwmln002   6                3         NW_WBWMLN002x2_mdrowar001   c               5         X2_MDROWAR001nw_it_mboots010   "                !         nw_it_mboots010nw_it_mglove008   /                0         nw_it_mglove008nw_maarcl057   5                5         NW_MAARCL057nw_it_mring023   4                       NW_IT_MRING023nw_it_mneck036                          NW_IT_MNECK036nw_it_mbelt011                            nw_it_mbelt011nw_wamar001                          NW_WAMAR001nw_waitress   1                       NW_WAITRESS         nw_c2_default1nw_c2_default2nw_c2_defaultbnw_c2_default5nw_c2_default6nw_c2_default8nw_c2_default3nw_c2_default4nw_c2_default9nw_c2_defaultanw_c2_default7nw_c2_defaultdnw_c2_defaulte   x3_door_wood002            v#      x3_door_wood002 	   tavernkey  x2_door_death                  x3_door_wood002            v#      x3_door_wood002       x2_door_death                  x3_door_wood002            v#      x3_door_wood002       x2_door_death                  x3_door_wood002            v#      x3_door_wood002       x2_door_death                  x3_door_oth002                x3_door_oth002       x2_door_death                       WP_NW_WAITRESS_01                             WP_NW_WAITRESS_02                             WP_NW_WAITRESS_03                             WP_NW_WAITRESS_04                         
                                           	                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u                  ?                                                                                                                                                                                                                                                                                       	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  =  >  6  7  8  9  :  ;  <  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~                                                                                                                                                                                                                                                                                       	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~                                                                                                                                                                                                                       	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~                                                                                                                                                                                                                                                                           	  
                _                        	   
                                                                         !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1              2   J      3   4   5   6      7   8   9   :      ;   <   =   >      ?   @   A   B      C   D   E   F      G   H   I      K   M      L      N      O   Q   S   U   W   X   \   ^      P      R      T      V          Y   Z   [      ]          `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {      |   }   ~                                                                              ITP V3.28            l             x   $  H                                                                  (          0          8          @          H          P          X          `          h          p                       :                                    #                                                       !                  "                  #                  $                          0                                                                                             MAIN            STRREF          ID              LIST                                    	   
                                                                              
                  	                     ITP V3.28            L             8     $                                                                  (          0                                                            !                  "                  #                  $                              MAIN            STRREF          LIST            ID                                      	   
                                          